①下载地址:Python官网https://www.python.org/,直接下载即可②Appium库:命令" />
appium学习 您所在的位置:网站首页 uiautomator python appium学习

appium学习

#appium学习| 来源: 网络整理| 查看: 265

一、环境准备1、安装Python3,Python3的Appium库https://www.python.org/,直接下载即可">①下载地址:Python官网https://www.python.org/,直接下载即可②Appium库:命令行输入pip install Appium-Python-Client安装即可2、安装Android SDK(下载Android Studio)https://developer.android.google.cn/studio/">下载地址:https://developer.android.google.cn/studio/①下载完成后,next安装,如需要安装自带的模拟器,勾选Android Virtual Device选项,如下图:②继续Next,到达定制组件页面,设置一下SDK的安装路径,如下图:③继续Next…finish,下载完成后即完成安装。3、安装JDKhttps://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html">下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html4、安装Appiumhttp://appium.io/,windows快捷下载地址:https://github.com/appium/appium-desktop/releases/download/v1.7.1/appium-desktop-setup-1.7.1.exe">下载地址:http://appium.io/,windows快捷下载地址:https://github.com/appium/appium-desktop/releases/download/v1.7.1/appium-desktop-setup-1.7.1.exe①安装完成后,启动Appium,host和port默认的即可,然后编辑下配置信息5、安装夜神模拟器https://www.yeshen.com/,傻瓜式安装,下一步即可,注意安装路径">下载地址: https://www.yeshen.com/,傻瓜式安装,下一步即可,注意安装路径①安装完成后,更改配置,进入bin目录②把安装好的Android SDK里的adb.exe文件(比如D:\Android\SDK\platform-tools目录下)复制到该目录覆盖掉该目录已存在的adb.exe文件③删掉该目录的nox_adb.exe文件,再复制一份adb.exe并重命名为nox_adb.exe,启动模拟器④在bin目录打开控制台,执行nox_adb.exe connect 127.0.0.1:62001,然后执行adb devices⑤安装apk文件,直接拖入即可。⑥继续在刚刚的控制台窗口里输入aapt dump badging D:\apk\XXXXXX,其中D:\apk\XXXXXX是测试apk的完整路径。二、pytest脚本准备1、项目目录2、test_app.py3、run.py①allure报告命令②运行run.py三、appium打开元素编辑页面1、点击放大镜,打开会话窗口2、填写需要的参数,点击开始会话,出现模拟器一样的窗口即成功四、备注1、adb命令2、appium定位元素(Android)3、appium移动端特有操作①获取滑屏的屏幕大小②滑动间距(通常达到 80%以上)③滑动时长

一、环境准备

1、安装Python3,Python3的Appium库

①下载地址:Python官网https://www.python.org/,直接下载即可

②Appium库:命令行输入pip install Appium-Python-Client安装即可

2、安装Android SDK(下载Android Studio)

下载地址:https://developer.android.google.cn/studio/

①下载完成后,next安装,如需要安装自带的模拟器,勾选Android Virtual Device选项,如下图:

②继续Next,到达定制组件页面,设置一下SDK的安装路径,如下图:

③继续Next…finish,下载完成后即完成安装。

3、安装JDK

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

4、安装Appium

下载地址:http://appium.io/,windows快捷下载地址:https://github.com/appium/appium-desktop/releases/download/v1.7.1/appium-desktop-setup-1.7.1.exe

①安装完成后,启动Appium,host和port默认的即可,然后编辑下配置信息

②点击下边那个保存并重启的按钮,然后点第一个Start Server按钮,启动成功

5、安装夜神模拟器

下载地址: https://www.yeshen.com/,傻瓜式安装,下一步即可,注意安装路径

①安装完成后,更改配置,进入bin目录

②把安装好的Android SDK里的adb.exe文件(比如D:\Android\SDK\platform-tools目录下)复制到该目录覆盖掉该目录已存在的adb.exe文件

③删掉该目录的nox_adb.exe文件,再复制一份adb.exe并重命名为nox_adb.exe,启动模拟器

④在bin目录打开控制台,执行nox_adb.exe connect 127.0.0.1:62001,然后执行adb devices

⑤安装apk文件,直接拖入即可。

⑥继续在刚刚的控制台窗口里输入aapt dump badging D:\apk\XXXXXX,其中D:\apk\XXXXXX是测试apk的完整路径。

记录package中的name,launchable activity name,脚本会用到。注:如果模拟器重启了,需要重新连接:nox_adb.exe connect 127.0.0.1:62001

二、pytest脚本准备

1、项目目录

allure_report/allure_result:allure报告logs:存放生成的日志文件test_case

test_app.py:测试用例文件

pytest.ini:主配置文件,可以改变pytest的默认行为run.py:主程序入口,执行测试用例

2、test_app.py

连接appium需要的参数:'platformName': 'Android', # 平台名称'platformVersion': '7.1.2', # 系统版本号,即夜神模拟器的Android版本# 设备名称。如果是真机,在'设置->关于手机->设备名称'里查看'deviceName': '127.0.0.1:62001', 'appPackage': 'xxxxxx', # apk的包名'appActivity': 'xxxxxx.activities.MainActivity' # activity 名称

3、run.py

①allure报告命令运行生成测试结果:pytest --alluredir 例:pytest test --alluredir allure_result --clean-alluredir 清除上次生成的报告数据注意!这个时候allure_result里边的数据只是测试结果(json.txt文件),还不是测试报告生成测试报告:allure generate -o --clean(清空旧数据)

②运行run.py

运行后,生成两个小机器,进入相应app页面人即连接成功。

三、appium打开元素编辑页面

1、点击放大镜,打开会话窗口

2、填写需要的参数,点击开始会话,出现模拟器一样的窗口即成功

四、备注

1、adb命令

安卓调试桥 (Android Debug Bridge, adb),是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。

1.显示当前运行的全部模拟器:adb devices2.启动ADB:adb start-server3.停止ADB:adb kill-server4.安装应用程序:adb install -r [apk文件] -l #锁定该程序-r #重新安装该程序,保存数据-s #安装在SD卡内,而不是设备内部存储 例:adb install --r D:\mm.apk5.卸载应用程序:adb uninstall [packagename] 例:adb uninstall com.tencent.mm -k #不删除程序运行所产生的数据和缓存目录(如软件的数据库文件) 例:adb uninstall -k com.tencent.mm6. 讲手机设备中的文件copy到本地计算机:adb pull 设备目录 本地目录 例:adb pull /sdcard/mm.txt D:\(讲内存卡根目录的txt文件copy到D盘根目录)7.将本地计算机的文件copy到手机设备中:adb push 本地目录 手机设备目录 例:adb push D:\mm.txt /sdcard8.查看adb命令帮助信息:adb help9.截屏例:adb shell screencap -p 截图文件路径10.查看指定包名应用的数据库储存信息(包括储存的SQL语句) 例:adb shell dumpsys dbinfo[packagename]11.查看指定的进程或则进程id的内存信息:adb shell dumpsys meminfo[packagename/pid]可以查看进 程当前的内存情况 例:adb shell dumpsys meminfo com.tencent.mm12.查看指定包名应用的详细信息(相当于AndroidMainfest.xml中内容) adb shell dumpsys [packagename]例:adb shell dumpsys com.tencent.mm13.查看当前应用的activity信息:adb shell dumpsys activity top 查看bug报告:adb bugreport14.列出手机装的所有apk包名:adb shell pm list packages 系统应用:adb shell pm list packages -s 第三方应用:adb shell pm list packages -3 使用grep过滤:adb shell pm list packages | grep qq15.清除应用缓存信息:adb shell pm clear [packagename]16.通过adb启动应用程序页面:adb shell am start -n[包名+activity名]例:adb shell am start -n com.tencent.mm/.ui.SplashAcitvity 强制停止应用有些时候应用卡死了,需要强制停止,则执行以下命令: adb shell am force-stop 如:adb shell am force-stop cn.androidstar.demo17、记录无线通讯日志: 一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令, 设置记录:adb shell logcat -b radio18、获取设备的ID和序列号:adb get-product adb get-serialno19、访问数据库SQLite3:adb shell sqlite3#cd system/sd/data //进入系统内指定文件夹 #ls //列表显示当前文件夹内容 #rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件 #rm xxx //删除文件xxx #rmdir xxx //删除xxx的文件夹20.导出设备信息 adb get-serialno > 序列号.txt adb shell cat /sys/class/net/wlan0/address > MAC地址.txt adb shell getprop ro.product.model > 设备型号.txt adb shell getprop ro.build.version.release> 系统版本.txt adb shell pm list packages -s > 系统应用的所有包名.txt adb shell pm list packages -3 > 第三方应用包名.txt adb shell wm size > 屏幕分辨率.txt adb shell wm density > 屏幕密度.txt adb shell cat /proc/cpuinfo > CPU信息.txt adb shell pm list permissions -f > 权限.txt adb shell pm list users -f > 用户.txt21.重启:adb reboot

2、appium定位元素(Android)

见上图,定位到“关于我们”并点击# appium的webdriver提供了11种元素定位方法,在selenium的基础上扩展了三个,可以在pycharm里面输入driver.find_element_by然后会自动匹配出来#通过id定位成功driver.find_element_by_id("com.youdao.calculator:id/tv_about").click()#tap是模拟手指点击,一般页面上元素.语法有两个参数,第一个是positions,是list类型最多五个点,duration是持续时间,单位毫秒#通过tap定位成功driver.tap([(540,556)],300)#通过xpath定位driver.find_element_by_xpath("//*[@resource-id='com.youdao.calculator:id/tv_about']//android.widget.LinearLayout[3]").click()# 通过android_uiautomator定位# 通过id定位my = 'new UiSelector().resourceId("com.youdao.calculator:id/tv_about")'driver.find_element_by_android_uiautomator(my).click()# 通过text定位# 1.通过text文本定位语法new UiSelector().text("关于我们")# 2.文本比较长的时候,可以用textContains模糊匹配,只要文本包含匹配内容就可以了。new UiSelector().textContains("关于我们")# 3.textStartsWith是以某个文本开头的匹配new UiSelector().textStartsWith("以‘关于我们’开头")# 4.正则匹配textMatches,这个需要配合正则表达式,就不举例了。new UiSelector().textMatches("正则表达式")# class属性一般不唯一,多半用在复数定位,className复数定位loc_class = 'new UiSelector().className("android.widget.TextView")'driver.find_elements_by_android_uiautomator(loc_class)[2].click()# 组合定位,一般组合用id,class,text这三个属性会比较好一点# id+class 属性组合id_class = 'resourceId("com.youdao.calculator:id/tv_about").className("android.widget.TextView")'driver.find_element_by_android_uiautomator(id_class).click()# 父子定位childSelector# 有时候不能直接定位某个元素,但是它的父元素很好定位,这时候就先定位父元素,通过父元素找儿子。son = 'resourceId("com.youdao.calculator:id/tv_about").childSelector(text("关于我们"))'driver.find_element_by_android_uiautomator(son).click()# 兄弟定位fromParent# 有时候父元素不好定位,但是跟他相邻的兄弟元素很好定位,这时候就可以通过兄弟元素,找到同一父级元素下的子元素。brother = 'resourceId("com.youdao.calculator:id/tv_about").fromParent(text("关于我们"))'driver.find_element_by_android_uiautomator(brother).click()

3、appium移动端特有操作

Appium 的swipe函数是针对屏幕上的坐标来滑动的。swipe函数是安卓和 IOS 两种设备同时通用。从一个点滑到另外一个点,那么每个点都有 x 值和 y 值。swipe有 4 个参数。所以起始 x,起始 y,结束 x,结束 y。

①获取滑屏的屏幕大小

1、获取到整屏的大小,按百分比来滑动,滑动的距离在70%-90%,首先获取屏幕的size get_window_size()这个函数的返回值:返回的是个字典。2、swipe有两个坐标点: 首先要得到start_x; x 轴是width。size[‘width’]是 x 轴的最大值; 从一个页面滑动到另外一个页面,y 轴没有变化。所以 y 值是固定的,就取个中间值 0.5;

#height、widthsize= driver.get_window_size()start_x=size['width']*0.9start_y=size['height']*0.5

②滑动间距(通常达到 80%以上)#height、widthsize= driver.get_window_size()start_x=size['width']*0.9start_y=size['height']*0.5end_x=size["width"]*0.1

③滑动时长

swipe还有个参数叫做duration(时长),这个单位是毫秒。

#height、widthsize= driver.get_window_size()start_x=size['width']*0.9start_y=size['height']*0.5end_x=size["width"]*0.1end_y=size['height']*0.5#从右向左滑driver.swipe(start_x,start_y,end_x,end_y,200)#从左向右滑driver.swipe(end_x,end_y,start_x,start_y,200)#向下滑动#向上滑动:x轴不变,y从大到小driver.swipe(size["width"]*0.5,size["heigth"]*0.9,size["width"]*0.5,size["heigth"]*0.1)#向上滑动:x轴不变,y从小到大driver.swipe(size["width"]*0.5,size["heigth"]*0.1,size["width"]*0.5,size["heigth"]*0.9)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有